package cn.e4j.modular.api.service;

import cn.e4j.core.dto.Dtos;
import cn.e4j.core.dto.impl.Dto;
import cn.e4j.core.util.ToolUtil;
import cn.e4j.modular.api.mapper.GwbMapper;
import cn.e4j.modular.system.entity.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by wenchuan on 2018/11/02.
 * <p>
 * gwb开头的表操作的公共方法
 */

@Service
public class GwbService{

    @Autowired
    GwbMapper gwbMapper;

    /**
     * 权限 获取当前人员的客户
     *  1、查询行业和区域 是否给人员有分配，如果没有分配就是无限制，如果有 根据2来查出客户
     *  2、人员分配的行业和区域进行客户交集+人员所负责的客户
     *
     *  inDto1--> gwak006: 1客户 2经销商
     *
     * @param inDto1
     * @return
     * @author wenchuan.li on 2018/11/02 17:13
     */
    public Dto getGwb001(SysUser currentUser,Dto inDto1) {

        Dto inDto = Dtos.newDto();
        inDto.put("ID", currentUser.getID());
        inDto.put("ENT",inDto1.getString("ENT"));
        if (ToolUtil.isEmpty(inDto1) || ToolUtil.isEmpty(inDto1.getString("GWAK006"))) {
            inDto.put("GWAK006", "1");
        } else {
            inDto.put("GWAK006", inDto1.getString("GWAK006"));
        }

        Dto gwb001Dto;
        if(inDto.getString("GWAK006").equals("1")){
            gwb001Dto = gwbMapper.getGwb001(inDto);
        }else{
            gwb001Dto = gwbMapper.getGwb001_2(inDto);
        }

        // 没有维护就是全部
        if (gwb001Dto.getBigDecimal("QYCOUNT").intValue() + gwb001Dto.getBigDecimal("HYCOUNT").intValue() > 0) {
            inDto.put("QYCOUNT", gwb001Dto.getBigDecimal("QYCOUNT").intValue());
            inDto.put("HYCOUNT", gwb001Dto.getBigDecimal("HYCOUNT").intValue());

            List<Dto> _list = null;
            if(inDto.getString("GWAK006").equals("1")){
                _list = gwbMapper.getGwb002(inDto);
            }else{
                _list = gwbMapper.getGwb002_2(inDto);
            }

            // 设置gwak001值,为了实现  无交集客户的时候 针对的权限控制查不到数据
            if(ToolUtil.isEmpty(_list)){
                _list = new ArrayList<>();
                Dto dto = new Dto();
                dto.put("ID","gwak001");

                _list.add(dto);
            }
            gwb001Dto.put("CUSTOMERS", _list);
        }else{

            gwb001Dto.put("CUSTOMERS",null);
        }
        return gwb001Dto;
    }



}
